Android音频框架AudioFlinger深度解析

📚 共计 30 章节
01
AudioFlinger概述
Android音频系统架构全景 · AudioFlinger位置与作用 · 核心设计理念
架构全景
02
AudioFlinger启动流程
init进程启动 · audioserver进程创建 · 实例化与关键初始化
进程初始化
03
音频策略与路由
AudioPolicyService关系 · 策略决策流程 · 音频路由切换机制
策略路由
04
音频设备管理
设备枚举 · DeviceDescriptor · 连接/断开处理 · 选择策略
设备枚举
05
音频流管理
PlaybackThread与RecordThread · 状态机 · 生命周期 · 参数配置
线程状态机
06
混音器(Mixer)核心原理
混音器架构 · 多路混音算法 · 采样率转换(SRC) · 音量与增益
混音SRC
07
音频数据通路
数据从APP到AudioFlinger · BufferQueue与环形缓冲区 · 共享内存
数据流Buffer
08
音频HAL层接口
HAL架构与标准接口 · 加载调用流程 · 与AudioFlinger交互 · 常见实现
HAL驱动
09
音频效果处理
Effect Framework · 预置效果(Equalizer/Reverb) · 效果链 · HAL交互
效果音效
10
音频时钟与同步
音频时钟源 · PTS与时间戳 · 音视频同步 · 时钟漂移补偿
时钟同步
11
低延迟音频通路
FastMixer/FastCapture · MMAP/NO_IRQ · 配置调优 · 性能指标
低延迟Fast
12
音频策略引擎
策略引擎架构 · 规则解析 · 动态调整 · 多设备输出策略
引擎动态
13
音频焦点管理
焦点机制设计 · 请求与释放 · 变化通知 · 与音量联动
焦点联动
14
音频录制通路
RecordThread详解 · 录音数据流向 · 回声消除(AEC) · 效果处理
录制AEC
15
音频输出通路
PlaybackThread详解 · DirectOutput/Offload · HDMI/蓝牙特殊路径
输出Offload
16
蓝牙音频支持
A2DP与HFP协议栈集成 · 编解码器管理 · 设备切换 · SCO链路
蓝牙A2DP
17
USB音频设备
USB Audio Class驱动 · 设备枚举配置 · 音频流管理 · 热插拔
USB热插拔
18
音频Ducking机制
Ducking触发条件 · 音量衰减策略 · 与焦点联动 · 应用场景
Ducking衰减
19
音频静音与音量管理
Master/Stream Volume · 音量曲线映射 · 静音状态机 · 持久化
音量静音
20
音频权限与安全
音频权限模型 · 录音权限检查 · 数据保护 · SELinux策略
权限安全
21
音频调试与日志
AudioFlinger日志 · dumpsys audio · 关键调试点 · 问题定位
调试日志
22
音频性能优化
CPU占用优化 · 内存管理 · 中断/轮询 · 功耗优化技巧
性能优化
23
多声道与空间音频
多声道处理 · 通道映射 · 空间音频(Spatial Audio) · 3D渲染
多声道空间音频
24
音频策略定制
厂商定制接口 · 策略XML配置 · 动态加载 · 多产品线适配
定制XML
25
AudioFlinger与MediaPlayer交互
MediaPlayer音频通路 · NuPlayer与AudioSink · 音视频同步
MediaPlayer同步
26
音频测试框架
CTS/VTS音频测试 · 自动化框架 · 性能基准 · 稳定性方法
测试CTS
27
常见问题与解决方案
音频卡顿 · 杂音爆音 · 设备切换失败 · 录音无声分析
问题实战
28
Android版本演进
各版本AudioFlinger变化 · Treble化改造 · 新特性 · 未来趋势
演进Treble
29
源码导读方法
关键源码索引 · 阅读路径 · 调试符号断点 · 分析工具推荐
源码导读
30
综合实战
自定义音频策略 · 虚拟音频设备 · 通路监控工具 · 性能调优案例
实战综合